import java.math.BigInteger;
import java.util.Random;

public class BigIntegerTest {
    public static void main(String[] args) {

        //1、获取一个随机的大整数
        Random r=new Random();
        for (int i = 0; i < 50; i++) {
            BigInteger b1=new BigInteger(4,r);
            System.out.println(b1);//0-15
        }

        System.out.println("-----------------------------");

        //2、获取一个指定的大整数(字符串中必须为整数)
        BigInteger b2=new BigInteger("9999999999999999999999");
        System.out.println(b2);

        System.out.println("-----------------------------");

        //3、获取指定进制的大整数（记得用字符串）
        BigInteger b3=new BigInteger("100",10);//十进制
        BigInteger b4=new BigInteger("100",2);//二进制
        System.out.println(b3);
        System.out.println(b4);

        System.out.println("-----------------------------");

        //4、静态方法获取BigInteger对象，内部有优化（-16~16）
        //提前把-16~16的BigInteger对象创建好，如果多次获取不会创建新的
        BigInteger b5=BigInteger.valueOf(16);//这里不要字符串了
        BigInteger b6=BigInteger.valueOf(16);
        System.out.println(b5==b6);//true 其实是同一个对象

        System.out.println("-----------------------------");

        //5、对象一旦创建，内部的数据不能发生改变
        BigInteger b7=BigInteger.valueOf(1);
        BigInteger b8=BigInteger.valueOf(2);
        BigInteger res=b7.add(b8);
        System.out.println(res);//3
        //此时不会修改BigInteger对象的值，而是产生一个新的BigInteger对象记录3

    }
}
